// 控制器：只处理业务逻辑，不关心路由路径
const { getContent } = require('../request');
const matcher = require('../matcher');
const { loadParserScript } = require('../loader');

const rssController = {
  fetchRssContent: async (req, res) => {
    try {
      const url = req.query.url;
      if (!url) {
        return res.status(400).json({ message: '缺少必需参数：url' });
      }
      if (!/^https?:\/\//i.test(url)) {
        return res.status(400).json({ message: 'url 必须以 http 或 https 开头' });
      }
      const content = await getContent(url);
      if (!content) {
        return res.status(500).json({ message: '抓取失败或超时' });
      }
      const { hostname } = new URL(url);
      const domain = hostname.split('.')[1];
      console.log(domain);
      console.log(matcher);

      const match = matcher.find(item => item.key === domain);
      console.log(match);
      if (!match) {
        return res.status(400).json({ message: '不支持的域名' });
      }
      const parserModule = await loadParserScript(match.headerPath);
      const headerResult = await parserModule.parse(content);

      console.log('parserModule.parse 类型:', typeof parserModule.parse);
      console.log('parserModule.parse 是否为函数:', parserModule.parse instanceof Function);


      console.log('headerResult:', headerResult);
      return res.json({ message: '抓取成功', data: headerResult });
    } catch (err) {
      return res.status(500).json({ message: '服务器内部错误', error: err?.message || 'unknown error' });
    }
  }
};

// 导出控制器（供路由使用）
module.exports = rssController;
